package cn.iocoder.yudao.module.biz.service.emergencyReservePlainDrillRecord;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.biz.controller.admin.emergencyReservePlainDrillRecord.vo.BizEmergencyReservePlainDrillRecordCreateReqVO;
import cn.iocoder.yudao.module.biz.controller.admin.emergencyReservePlainDrillRecord.vo.BizEmergencyReservePlainDrillRecordExportReqVO;
import cn.iocoder.yudao.module.biz.controller.admin.emergencyReservePlainDrillRecord.vo.BizEmergencyReservePlainDrillRecordPageReqVO;
import cn.iocoder.yudao.module.biz.controller.admin.emergencyReservePlainDrillRecord.vo.BizEmergencyReservePlainDrillRecordUpdateReqVO;
import cn.iocoder.yudao.module.biz.dal.dataobject.emergencyReservePlainDrillRecord.BizEmergencyReservePlainDrillRecordDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 演练记录 Service 接口
 *
 * @author 芋道源码
 */
public interface BizEmergencyReservePlainDrillRecordService {

    /**
     * 创建演练记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createEmergencyReservePlainDrillRecord(@Valid BizEmergencyReservePlainDrillRecordCreateReqVO createReqVO);

    /**
     * 更新演练记录
     *
     * @param updateReqVO 更新信息
     */
    void updateEmergencyReservePlainDrillRecord(@Valid BizEmergencyReservePlainDrillRecordUpdateReqVO updateReqVO);

    /**
     * 删除演练记录
     *
     * @param id 编号
     */
    void deleteEmergencyReservePlainDrillRecord(String id);

    /**
     * 获得演练记录
     *
     * @param id 编号
     * @return 演练记录
     */
    BizEmergencyReservePlainDrillRecordDO getEmergencyReservePlainDrillRecord(String id);

    /**
     * 获得演练记录列表
     *
     * @param ids 编号
     * @return 演练记录列表
     */
    List<BizEmergencyReservePlainDrillRecordDO> getEmergencyReservePlainDrillRecordList(Collection<String> ids);

    /**
     * 获得演练记录分页
     *
     * @param pageReqVO 分页查询
     * @return 演练记录分页
     */
    PageResult<BizEmergencyReservePlainDrillRecordDO> getEmergencyReservePlainDrillRecordPage(BizEmergencyReservePlainDrillRecordPageReqVO pageReqVO);

    /**
     * 获得演练记录列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 演练记录列表
     */
    List<BizEmergencyReservePlainDrillRecordDO> getEmergencyReservePlainDrillRecordList(BizEmergencyReservePlainDrillRecordExportReqVO exportReqVO);

    /**
     * 根据预案id获取演练记录列表
     *
     * @param reserveIds 预案id
     * @return 演练记录列表
     */
    List<BizEmergencyReservePlainDrillRecordDO> getEmergencyReservePlainDrillRecordListByReserveId(List<String> reserveIds);

}
